﻿using System;
using System.Collections.Generic;
using Helpers;
using TaleWorlds.CampaignSystem.Actions;
using TaleWorlds.CampaignSystem.GameMenus;
using TaleWorlds.CampaignSystem.Overlay;
using TaleWorlds.CampaignSystem.Settlements.Locations;
using TaleWorlds.Library;
using TaleWorlds.Localization;
using TaleWorlds.ObjectSystem;
using TaleWorlds.SaveSystem;

namespace TaleWorlds.CampaignSystem
{
	// Token: 0x02000062 RID: 98
	public abstract class QuestBase : MBObjectBase
	{
		// Token: 0x06000D42 RID: 3394 RVA: 0x00042FF2 File Offset: 0x000411F2
		protected override void AutoGeneratedInstanceCollectObjects(List<object> collectedObjects)
		{
			base.AutoGeneratedInstanceCollectObjects(collectedObjects);
			collectedObjects.Add(this._taskList);
			collectedObjects.Add(this._journalEntries);
			collectedObjects.Add(this._questGiver);
			CampaignTime.AutoGeneratedStaticCollectObjectsCampaignTime(this.QuestDueTime, collectedObjects);
		}

		// Token: 0x06000D43 RID: 3395 RVA: 0x00043030 File Offset: 0x00041230
		internal static object AutoGeneratedGetMemberValueQuestDueTime(object o)
		{
			return ((QuestBase)o).QuestDueTime;
		}

		// Token: 0x06000D44 RID: 3396 RVA: 0x00043042 File Offset: 0x00041242
		internal static object AutoGeneratedGetMemberValueIsTrackEnabled(object o)
		{
			return ((QuestBase)o).IsTrackEnabled;
		}

		// Token: 0x06000D45 RID: 3397 RVA: 0x00043054 File Offset: 0x00041254
		internal static object AutoGeneratedGetMemberValueRewardGold(object o)
		{
			return ((QuestBase)o).RewardGold;
		}

		// Token: 0x06000D46 RID: 3398 RVA: 0x00043066 File Offset: 0x00041266
		internal static object AutoGeneratedGetMemberValue_questState(object o)
		{
			return ((QuestBase)o)._questState;
		}

		// Token: 0x06000D47 RID: 3399 RVA: 0x00043078 File Offset: 0x00041278
		internal static object AutoGeneratedGetMemberValue_taskList(object o)
		{
			return ((QuestBase)o)._taskList;
		}

		// Token: 0x06000D48 RID: 3400 RVA: 0x00043085 File Offset: 0x00041285
		internal static object AutoGeneratedGetMemberValue_journalEntries(object o)
		{
			return ((QuestBase)o)._journalEntries;
		}

		// Token: 0x06000D49 RID: 3401 RVA: 0x00043092 File Offset: 0x00041292
		internal static object AutoGeneratedGetMemberValue_questGiver(object o)
		{
			return ((QuestBase)o)._questGiver;
		}

		// Token: 0x17000348 RID: 840
		// (get) Token: 0x06000D4A RID: 3402 RVA: 0x0004309F File Offset: 0x0004129F
		// (set) Token: 0x06000D4B RID: 3403 RVA: 0x000430A7 File Offset: 0x000412A7
		[SaveableProperty(101)]
		public CampaignTime QuestDueTime { get; protected set; }

		// Token: 0x17000349 RID: 841
		// (get) Token: 0x06000D4C RID: 3404 RVA: 0x000430B0 File Offset: 0x000412B0
		public MBReadOnlyList<QuestTaskBase> TaskList
		{
			get
			{
				return this._taskList;
			}
		}

		// Token: 0x1700034A RID: 842
		// (get) Token: 0x06000D4D RID: 3405 RVA: 0x000430B8 File Offset: 0x000412B8
		public MBReadOnlyList<JournalLog> JournalEntries
		{
			get
			{
				return this._journalEntries;
			}
		}

		// Token: 0x1700034B RID: 843
		// (get) Token: 0x06000D4E RID: 3406 RVA: 0x000430C0 File Offset: 0x000412C0
		// (set) Token: 0x06000D4F RID: 3407 RVA: 0x000430C8 File Offset: 0x000412C8
		[SaveableProperty(104)]
		public bool IsTrackEnabled { get; private set; }

		// Token: 0x1700034C RID: 844
		// (get) Token: 0x06000D50 RID: 3408 RVA: 0x000430D1 File Offset: 0x000412D1
		public bool IsOngoing
		{
			get
			{
				return this._questState == QuestBase.QuestStates.Ongoing;
			}
		}

		// Token: 0x1700034D RID: 845
		// (get) Token: 0x06000D51 RID: 3409 RVA: 0x000430DC File Offset: 0x000412DC
		public bool IsFinalized
		{
			get
			{
				return this._questState == QuestBase.QuestStates.Finalized;
			}
		}

		// Token: 0x1700034E RID: 846
		// (get) Token: 0x06000D52 RID: 3410 RVA: 0x000430E7 File Offset: 0x000412E7
		public bool IsThereDiscussDialogFlow
		{
			get
			{
				return this.DiscussDialogFlow != null;
			}
		}

		// Token: 0x1700034F RID: 847
		// (get) Token: 0x06000D53 RID: 3411 RVA: 0x000430F2 File Offset: 0x000412F2
		// (set) Token: 0x06000D54 RID: 3412 RVA: 0x000430FA File Offset: 0x000412FA
		public Hero QuestGiver
		{
			get
			{
				return this._questGiver;
			}
			private set
			{
				this._questGiver = value;
			}
		}

		// Token: 0x17000350 RID: 848
		// (get) Token: 0x06000D55 RID: 3413
		public abstract TextObject Title { get; }

		// Token: 0x17000351 RID: 849
		// (get) Token: 0x06000D56 RID: 3414
		public abstract bool IsRemainingTimeHidden { get; }

		// Token: 0x17000352 RID: 850
		// (get) Token: 0x06000D57 RID: 3415 RVA: 0x00043103 File Offset: 0x00041303
		// (set) Token: 0x06000D58 RID: 3416 RVA: 0x0004310B File Offset: 0x0004130B
		public virtual int RelationshipChangeWithQuestGiver { get; protected set; }

		// Token: 0x17000353 RID: 851
		// (get) Token: 0x06000D59 RID: 3417 RVA: 0x00043114 File Offset: 0x00041314
		public virtual bool IsSpecialQuest
		{
			get
			{
				return false;
			}
		}

		// Token: 0x06000D5A RID: 3418
		protected abstract void SetDialogs();

		// Token: 0x06000D5B RID: 3419 RVA: 0x00043117 File Offset: 0x00041317
		protected QuestBase(string questId, Hero questGiver, CampaignTime duration, int rewardGold) : base(questId)
		{
			this.QuestGiver = questGiver;
			this.QuestDueTime = duration;
			this.IsTrackEnabled = true;
			this.RewardGold = rewardGold;
			this._taskList = new MBList<QuestTaskBase>();
			this._journalEntries = new MBList<JournalLog>();
		}

		// Token: 0x06000D5C RID: 3420 RVA: 0x00043154 File Offset: 0x00041354
		public void StartQuest()
		{
			this._questState = QuestBase.QuestStates.Ongoing;
			this.OnStartQuest();
			this.RegisterEvents();
			MapEventHelper.OnConversationEnd();
			if (this.QuestGiver != null && !Campaign.Current.QuestManager.TrackedObjects.ContainsKey(this.QuestGiver))
			{
				Campaign.Current.QuestManager.AddTrackedObjectForQuest(this.QuestGiver, this);
			}
			CampaignEventDispatcher.Instance.OnQuestStarted(this);
		}

		// Token: 0x06000D5D RID: 3421 RVA: 0x000431BE File Offset: 0x000413BE
		public void CompleteQuestWithSuccess()
		{
			this.OnCompleteWithSuccess();
			this.FinalizeQuest();
			CampaignEventDispatcher.Instance.OnQuestCompleted(this, QuestBase.QuestCompleteDetails.Success);
			this.AfterFinalize();
		}

		// Token: 0x06000D5E RID: 3422 RVA: 0x000431E0 File Offset: 0x000413E0
		public void CompleteQuestWithTimeOut(TextObject timeOutLog = null)
		{
			bool flag = false;
			bool flag2 = false;
			this.OnBeforeTimedOut(ref flag, ref flag2);
			if (!flag2)
			{
				if (!flag)
				{
					if (timeOutLog != null)
					{
						this.AddLog(timeOutLog, false);
					}
					this.OnTimedOut();
					this.FinalizeQuest();
					CampaignEventDispatcher.Instance.OnQuestCompleted(this, QuestBase.QuestCompleteDetails.Timeout);
					this.AfterFinalize();
					return;
				}
				this.CompleteQuestWithSuccess();
			}
		}

		// Token: 0x06000D5F RID: 3423 RVA: 0x00043232 File Offset: 0x00041432
		public void CompleteQuestWithFail(TextObject cancelLog = null)
		{
			if (cancelLog != null)
			{
				this.AddLog(cancelLog, false);
			}
			this.OnFailed();
			this.FinalizeQuest();
			CampaignEventDispatcher.Instance.OnQuestCompleted(this, QuestBase.QuestCompleteDetails.Fail);
			this.AfterFinalize();
		}

		// Token: 0x06000D60 RID: 3424 RVA: 0x0004325E File Offset: 0x0004145E
		public void CompleteQuestWithBetrayal(TextObject betrayLog = null)
		{
			if (betrayLog != null)
			{
				this.AddLog(betrayLog, false);
			}
			this.OnBetrayal();
			this.FinalizeQuest();
			CampaignEventDispatcher.Instance.OnQuestCompleted(this, QuestBase.QuestCompleteDetails.FailWithBetrayal);
			this.AfterFinalize();
		}

		// Token: 0x06000D61 RID: 3425 RVA: 0x0004328A File Offset: 0x0004148A
		public void CompleteQuestWithCancel(TextObject cancelLog = null)
		{
			if (cancelLog != null)
			{
				this.AddLog(cancelLog, false);
			}
			this.OnCanceled();
			this.FinalizeQuest();
			CampaignEventDispatcher.Instance.OnQuestCompleted(this, QuestBase.QuestCompleteDetails.Cancel);
			this.AfterFinalize();
		}

		// Token: 0x06000D62 RID: 3426 RVA: 0x000432B8 File Offset: 0x000414B8
		private void FinalizeQuest()
		{
			foreach (QuestTaskBase questTaskBase in this._taskList)
			{
				if (questTaskBase.IsActive)
				{
					questTaskBase.Finish(QuestTaskBase.FinishStates.Cancel);
				}
			}
			this._questState = QuestBase.QuestStates.Finalized;
			this.OnFinalize();
			this.ClearRelatedFields();
			this.OfferDialogFlow = null;
			this.DiscussDialogFlow = null;
			this.QuestCharacterDialogFlow = null;
			Campaign.Current.QuestManager.OnQuestFinalized(this);
		}

		// Token: 0x06000D63 RID: 3427 RVA: 0x0004334C File Offset: 0x0004154C
		private void AfterFinalize()
		{
			this.RemoveAllTrackedObjects();
		}

		// Token: 0x06000D64 RID: 3428 RVA: 0x00043354 File Offset: 0x00041554
		protected void InitializeQuestOnCreation()
		{
			this.AddDialogs();
		}

		// Token: 0x06000D65 RID: 3429 RVA: 0x0004335C File Offset: 0x0004155C
		public void InitializeQuestOnLoadWithQuestManager()
		{
			this.RegisterEvents();
			this.InitializeQuestOnGameLoad();
			this.AddDialogs();
		}

		// Token: 0x06000D66 RID: 3430 RVA: 0x00043370 File Offset: 0x00041570
		internal void HourlyTickWithQuestManager()
		{
			this.HourlyTick();
		}

		// Token: 0x06000D67 RID: 3431 RVA: 0x00043378 File Offset: 0x00041578
		protected void AddTask(QuestTaskBase task)
		{
			this._taskList.Add(task);
			task.SetReferences();
		}

		// Token: 0x17000354 RID: 852
		// (get) Token: 0x06000D68 RID: 3432 RVA: 0x0004338C File Offset: 0x0004158C
		protected virtual TextObject TargetHeroDisappearedLogText
		{
			get
			{
				return new TextObject("{=ZfRmHMJJ}{QUEST_TARGET.LINK} has lost the struggle against {?QUEST_TARGET.GENDER}her{?}his{\\?} rivals and decided to left the realm. Your agreement with {QUEST_GIVER.LINK} has been canceled and your service is no longer needed to solve the issue.", null);
			}
		}

		// Token: 0x17000355 RID: 853
		// (get) Token: 0x06000D69 RID: 3433 RVA: 0x00043399 File Offset: 0x00041599
		protected virtual TextObject TargetHeroDiedLogText
		{
			get
			{
				return new TextObject("{=WKIqnKtu}{QUEST_TARGET.LINK} has died and your agreement with {QUEST_GIVER.LINK} has been canceled. Your service is no longer needed to solve the issue.", null);
			}
		}

		// Token: 0x06000D6A RID: 3434 RVA: 0x000433A8 File Offset: 0x000415A8
		public JournalLog AddLog(TextObject text, bool hideInformation = false)
		{
			JournalLog journalLog = new JournalLog(CampaignTime.Now, text, null, 0, 0, LogType.Text);
			this._journalEntries.Add(journalLog);
			CampaignEventDispatcher.Instance.OnQuestLogAdded(this, hideInformation);
			return journalLog;
		}

		// Token: 0x06000D6B RID: 3435 RVA: 0x000433E0 File Offset: 0x000415E0
		public JournalLog AddDiscreteLog(TextObject text, TextObject taskName, int currentProgress, int targetProgress, TextObject shortText = null, bool hideInformation = false)
		{
			JournalLog journalLog = new JournalLog(CampaignTime.Now, text, taskName, currentProgress, targetProgress, LogType.Discreate);
			this._journalEntries.Add(journalLog);
			CampaignEventDispatcher.Instance.OnQuestLogAdded(this, hideInformation);
			return journalLog;
		}

		// Token: 0x06000D6C RID: 3436 RVA: 0x00043418 File Offset: 0x00041618
		public JournalLog AddTwoWayContinuousLog(TextObject text, TextObject taskName, int currentProgress, int range, bool hideInformation = false)
		{
			JournalLog journalLog = new JournalLog(CampaignTime.Now, text, taskName, currentProgress, range, LogType.TwoWayContinuous);
			this._journalEntries.Add(journalLog);
			CampaignEventDispatcher.Instance.OnQuestLogAdded(this, hideInformation);
			return journalLog;
		}

		// Token: 0x06000D6D RID: 3437 RVA: 0x00043450 File Offset: 0x00041650
		protected void RemoveLog(JournalLog logToRemove)
		{
			if (this._journalEntries.Contains(logToRemove))
			{
				this._journalEntries.Remove(logToRemove);
				return;
			}
			Debug.FailedAssert("Quest log requested to be removed cant be found.", "C:\\Develop\\MB3\\Source\\Bannerlord\\TaleWorlds.CampaignSystem\\QuestBase.cs", "RemoveLog", 276);
		}

		// Token: 0x06000D6E RID: 3438 RVA: 0x00043488 File Offset: 0x00041688
		protected void UpdateQuestTaskStage(JournalLog questLog, int currentProgress)
		{
			foreach (JournalLog journalLog in this._journalEntries)
			{
				if (journalLog == questLog)
				{
					journalLog.UpdateCurrentProgress(currentProgress);
				}
			}
		}

		// Token: 0x06000D6F RID: 3439 RVA: 0x000434E0 File Offset: 0x000416E0
		public virtual GameMenuOption.IssueQuestFlags IsLocationTrackedByQuest(Location location)
		{
			return GameMenuOption.IssueQuestFlags.None;
		}

		// Token: 0x06000D70 RID: 3440 RVA: 0x000434E3 File Offset: 0x000416E3
		public virtual int GetCurrentProgress()
		{
			return -1;
		}

		// Token: 0x06000D71 RID: 3441 RVA: 0x000434E6 File Offset: 0x000416E6
		public virtual int GetMaxProgress()
		{
			return 1;
		}

		// Token: 0x06000D72 RID: 3442 RVA: 0x000434E9 File Offset: 0x000416E9
		public override string ToString()
		{
			return base.StringId;
		}

		// Token: 0x06000D73 RID: 3443 RVA: 0x000434F1 File Offset: 0x000416F1
		public virtual string GetPrefabName()
		{
			return "bd_target_board_2";
		}

		// Token: 0x06000D74 RID: 3444 RVA: 0x000434F8 File Offset: 0x000416F8
		private void AddDialogs()
		{
			if (this.OfferDialogFlow != null)
			{
				Campaign.Current.ConversationManager.AddDialogFlow(this.OfferDialogFlow, this);
			}
			if (this.DiscussDialogFlow != null)
			{
				Campaign.Current.ConversationManager.AddDialogFlow(this.DiscussDialogFlow, this);
			}
			if (this.QuestCharacterDialogFlow != null)
			{
				Campaign.Current.ConversationManager.AddDialogFlow(this.QuestCharacterDialogFlow, this);
			}
		}

		// Token: 0x06000D75 RID: 3445 RVA: 0x00043560 File Offset: 0x00041760
		private void ClearRelatedFields()
		{
			CampaignEventDispatcher.Instance.RemoveListeners(this);
			foreach (QuestTaskBase o in this._taskList)
			{
				CampaignEventDispatcher.Instance.RemoveListeners(o);
			}
			Campaign.Current.ConversationManager.RemoveRelatedLines(this);
			Campaign.Current.GameMenuManager.RemoveRelatedGameMenus(this);
			Campaign.Current.GameMenuManager.RemoveRelatedGameMenuOptions(this);
		}

		// Token: 0x06000D76 RID: 3446 RVA: 0x000435F4 File Offset: 0x000417F4
		private void RemoveAllTrackedObjects()
		{
			Campaign.Current.QuestManager.RemoveAllTrackedObjectsForQuest(this);
		}

		// Token: 0x06000D77 RID: 3447 RVA: 0x00043606 File Offset: 0x00041806
		public void AddTrackedObject(ITrackableCampaignObject trackedObject)
		{
			Campaign.Current.QuestManager.AddTrackedObjectForQuest(trackedObject, this);
			if (this.IsTrackEnabled)
			{
				Campaign.Current.VisualTrackerManager.RegisterObject(trackedObject);
			}
		}

		// Token: 0x06000D78 RID: 3448 RVA: 0x00043631 File Offset: 0x00041831
		public void RemoveTrackedObject(ITrackableCampaignObject trackedObject)
		{
			Campaign.Current.QuestManager.RemoveTrackedObjectForQuest(trackedObject, this);
		}

		// Token: 0x06000D79 RID: 3449 RVA: 0x00043644 File Offset: 0x00041844
		public bool IsTracked(ITrackableCampaignObject o)
		{
			return Campaign.Current.QuestManager.TrackedObjects.ContainsKey(o) && Campaign.Current.QuestManager.TrackedObjects[o].Contains(this);
		}

		// Token: 0x06000D7A RID: 3450 RVA: 0x0004367C File Offset: 0x0004187C
		public void ToggleTrackedObjects()
		{
			this.IsTrackEnabled = !this.IsTrackEnabled;
			List<ITrackableCampaignObject> allTrackedObjectsOfAQuest = Campaign.Current.QuestManager.GetAllTrackedObjectsOfAQuest(this);
			if (this.IsTrackEnabled)
			{
				using (List<ITrackableCampaignObject>.Enumerator enumerator = allTrackedObjectsOfAQuest.GetEnumerator())
				{
					while (enumerator.MoveNext())
					{
						ITrackableCampaignObject obj = enumerator.Current;
						Campaign.Current.VisualTrackerManager.RegisterObject(obj);
					}
					return;
				}
			}
			foreach (ITrackableCampaignObject obj2 in allTrackedObjectsOfAQuest)
			{
				Campaign.Current.VisualTrackerManager.RemoveTrackedObject(obj2, false);
			}
		}

		// Token: 0x06000D7B RID: 3451 RVA: 0x00043744 File Offset: 0x00041944
		public void AddGameMenu(string menuId, TextObject menuText, OnInitDelegate initDelegate, GameOverlays.MenuOverlayType overlay = GameOverlays.MenuOverlayType.None, GameMenu.MenuFlags menuFlags = GameMenu.MenuFlags.None)
		{
			GameMenu gameMenu = new GameMenu(menuId);
			gameMenu.Initialize(menuText, initDelegate, overlay, menuFlags, this);
			Campaign.Current.GameMenuManager.AddGameMenu(gameMenu);
		}

		// Token: 0x06000D7C RID: 3452 RVA: 0x00043778 File Offset: 0x00041978
		public void AddGameMenuOption(string menuId, string optionId, TextObject optionText, GameMenuOption.OnConditionDelegate condition, GameMenuOption.OnConsequenceDelegate consequence, bool Isleave = false, int index = -1)
		{
			GameMenu gameMenu = Campaign.Current.GameMenuManager.GetGameMenu(menuId);
			if (gameMenu == null)
			{
				throw new KeyNotFoundException();
			}
			gameMenu.AddOption(optionId, optionText, condition, consequence, index, Isleave, false, this);
		}

		// Token: 0x06000D7D RID: 3453 RVA: 0x000437AF File Offset: 0x000419AF
		public void ChangeQuestDueTime(CampaignTime questDueTime)
		{
			this.QuestDueTime = questDueTime;
		}

		// Token: 0x06000D7E RID: 3454
		protected abstract void InitializeQuestOnGameLoad();

		// Token: 0x06000D7F RID: 3455
		protected abstract void HourlyTick();

		// Token: 0x06000D80 RID: 3456 RVA: 0x000437B8 File Offset: 0x000419B8
		protected virtual void RegisterEvents()
		{
		}

		// Token: 0x06000D81 RID: 3457 RVA: 0x000437BA File Offset: 0x000419BA
		protected virtual void OnStartQuest()
		{
		}

		// Token: 0x06000D82 RID: 3458 RVA: 0x000437BC File Offset: 0x000419BC
		protected virtual void OnCompleteWithSuccess()
		{
		}

		// Token: 0x06000D83 RID: 3459 RVA: 0x000437BE File Offset: 0x000419BE
		protected virtual void OnFinalize()
		{
		}

		// Token: 0x06000D84 RID: 3460 RVA: 0x000437C0 File Offset: 0x000419C0
		public virtual void OnFailed()
		{
		}

		// Token: 0x06000D85 RID: 3461 RVA: 0x000437C2 File Offset: 0x000419C2
		protected virtual void OnTimedOut()
		{
		}

		// Token: 0x06000D86 RID: 3462 RVA: 0x000437C4 File Offset: 0x000419C4
		protected virtual void OnBeforeTimedOut(ref bool completeWithSuccess, ref bool doNotResolveTheQuest)
		{
		}

		// Token: 0x06000D87 RID: 3463 RVA: 0x000437C6 File Offset: 0x000419C6
		protected virtual void OnBetrayal()
		{
		}

		// Token: 0x06000D88 RID: 3464 RVA: 0x000437C8 File Offset: 0x000419C8
		public virtual void OnCanceled()
		{
		}

		// Token: 0x06000D89 RID: 3465 RVA: 0x000437CA File Offset: 0x000419CA
		public virtual bool QuestPreconditions()
		{
			return false;
		}

		// Token: 0x06000D8A RID: 3466 RVA: 0x000437CD File Offset: 0x000419CD
		public virtual void OnHeroCanHaveQuestOrIssueInfoIsRequested(Hero hero, ref bool result)
		{
		}

		// Token: 0x06000D8B RID: 3467 RVA: 0x000437CF File Offset: 0x000419CF
		public virtual void OnHeroCanMarryInfoIsRequested(Hero hero, ref bool result)
		{
		}

		// Token: 0x06000D8C RID: 3468 RVA: 0x000437D1 File Offset: 0x000419D1
		public virtual void OnHeroCanLeadPartyInfoIsRequested(Hero hero, ref bool result)
		{
		}

		// Token: 0x06000D8D RID: 3469 RVA: 0x000437D3 File Offset: 0x000419D3
		public virtual void OnHeroCanHavePartyRoleOrBeGovernorInfoIsRequested(Hero hero, ref bool result)
		{
		}

		// Token: 0x06000D8E RID: 3470 RVA: 0x000437D5 File Offset: 0x000419D5
		public virtual void OnHeroCanDieInfoIsRequested(Hero hero, KillCharacterAction.KillCharacterActionDetail causeOfDeath, ref bool result)
		{
			result = (!hero.IsNotable || hero != this.QuestGiver);
		}

		// Token: 0x06000D8F RID: 3471 RVA: 0x000437F0 File Offset: 0x000419F0
		public virtual void OnHeroCanBecomePrisonerInfoIsRequested(Hero hero, ref bool result)
		{
		}

		// Token: 0x06000D90 RID: 3472 RVA: 0x000437F2 File Offset: 0x000419F2
		public virtual void OnHeroCanBeSelectedInInventoryInfoIsRequested(Hero hero, ref bool result)
		{
		}

		// Token: 0x06000D91 RID: 3473 RVA: 0x000437F4 File Offset: 0x000419F4
		public virtual void OnHeroCanMoveToSettlementInfoIsRequested(Hero hero, ref bool result)
		{
		}

		// Token: 0x040003D7 RID: 983
		[SaveableField(100)]
		private QuestBase.QuestStates _questState;

		// Token: 0x040003D9 RID: 985
		protected DialogFlow OfferDialogFlow;

		// Token: 0x040003DA RID: 986
		protected DialogFlow DiscussDialogFlow;

		// Token: 0x040003DB RID: 987
		protected DialogFlow QuestCharacterDialogFlow;

		// Token: 0x040003DC RID: 988
		[SaveableField(102)]
		private MBList<QuestTaskBase> _taskList;

		// Token: 0x040003DD RID: 989
		[SaveableField(103)]
		private readonly MBList<JournalLog> _journalEntries;

		// Token: 0x040003DF RID: 991
		[SaveableField(106)]
		private Hero _questGiver;

		// Token: 0x040003E1 RID: 993
		[SaveableField(107)]
		public readonly int RewardGold;

		// Token: 0x020004B7 RID: 1207
		internal enum QuestStates
		{
			// Token: 0x0400145E RID: 5214
			Ongoing,
			// Token: 0x0400145F RID: 5215
			Finalized
		}

		// Token: 0x020004B8 RID: 1208
		public enum QuestCompleteDetails
		{
			// Token: 0x04001461 RID: 5217
			Invalid,
			// Token: 0x04001462 RID: 5218
			Success,
			// Token: 0x04001463 RID: 5219
			Cancel,
			// Token: 0x04001464 RID: 5220
			Fail,
			// Token: 0x04001465 RID: 5221
			Timeout,
			// Token: 0x04001466 RID: 5222
			FailWithBetrayal
		}
	}
}
